local texttag = require 'ac.texttag'

--require '地图.rule.命令按钮'


ac.game:event '单位-死亡' (function (_, unit)
    local point = unit.test_point
    if point then 
        ac.wait(10000, function ()
            if unit:is_type('英雄') then 
                unit:revive(point)
            else 
                 unit = unit:create_unit(unit:get_name(), point)
                 unit.test_point = point
            end 
            unit:get_point():effect 
            {
                model = [[Abilities\Spells\Human\ReviveHuman\ReviveHuman.mdl]]
            }:remove()
        end)
        
    end 
end)

ac.game:event '单位-初始化' (function (_, u)
    local skill_list = u.data.skill_list

    if skill_list == nil then 
        return 
    end 


    for _, name in ipairs(skill_list) do 
        if ac.lni('skill',name) then 
            local skl = u:add_skill(name, '英雄')
        end 
    end 
end)

local function test_unit()
    local player = ac.player(1)
    local point = ac.point(-3000, -3000)

    player:add('金币', 100000)
    
    player:add('木材', 100000)
    local hero_pool = {}

    local x, y = -3000, -3000
    --for name, data in sortpairs(ac.table.unit) do 
    --    if data.types and data.types[1] == '英雄' and data.race then 
    --        hero_pool[#hero_pool + 1] = name
--
    --        local unit = ac.player(1):create_unit(name, ac.point(x, y))
--
    --        unit.test_point = unit:get_point()
    --        --print(name, unit:get_slk('regenHP', 0), unit:get_slk('regenMana', 0))
--
    --        
    --       -- local unit = ac.player(1):create_unit('地精修补匠', point)
    --        local rate = 10
    --        unit:set('魔法上限', unit:get('魔法上限') * rate)
    --        unit:set('生命上限', unit:get('生命上限') * rate)
    --        unit:set('基础护甲', unit:get('基础护甲') * rate)
--
    --        x = x + 200
--
    --        if x > -2000 then 
    --            y = y - 200
    --            x = -3000
    --        end 
    --    end 
    --end 

   -- local unit = ac.player(1):create_unit('地精修补匠', point)
   --unit:set('魔法上限', 500000)
   --unit:set('生命上限', 500000)
   --unit:set('基础护甲', 100)


    --player.hero = unit 


    local unit = ac.player(12):create_unit('剑圣', ac.point(-3000, -1500))

    unit.test_point = unit:get_point()
    
    local rate = 10
    unit:set('魔法上限', unit:get('魔法上限') * rate)
    unit:set('生命上限', unit:get('生命上限') * rate)
    unit:set('基础护甲', unit:get('基础护甲') * rate)

    --unit:set('生命上限', 500000)
    --unit:set('魔法上限', 500000)
    --unit:set('护甲', 0)
    local unit = ac.player(12):create_unit('弓箭手', ac.point(-3000, -1500))
    -- unit:add_buff '隐身' {
    --     remove_when_attack = true, 
    --     remove_when_spell = true,
    -- }
    unit:set('生命', 1000000000000)
    unit:add_restriction '缴械'

    for i = 1, 4 do 
        local unit = ac.player(1):create_unit('步兵', point + {0, -200})
        unit:set('生命', unit:get('生命上限') / 2)
        unit.test_point = unit:get_point()
       
    end 

    for i = 1, 20 do 
        local unit = ac.player(12):create_unit('步兵', ac.point(-3000, -3000))
        unit.test_point = unit:get_point()
        
    end 
    for i = 1, 2 do 
        local unit = ac.player(12):create_unit('角鹰兽', ac.point(-3000, -3000))
        unit.test_point = unit:get_point()
    end
    
    ac.game:set_time(18)
    local unit = ac.player(1):create_unit('弓箭手', ac.point(-1000, -2000))
--    --unit:add_skill('骑乘角鹰兽', '英雄')
--    --unit:add_skill('影遁', '英雄')
--    --unit:add_skill('艾鲁尼之优雅', '英雄')
--    local unit = ac.player(1):create_unit('投刃车', ac.point(-1000, -2000))
--    --unit:add_skill('穿刺剑刃', '英雄')
--    local unit = ac.player(1):create_unit('女猎手', ac.point(-1000, -2000))
--    --unit:add_skill('哨兵', '英雄')
--    --unit:add_skill('影遁', '英雄')
--    --unit:add_skill('月刃', '英雄')
    local unit = ac.player(1):create_unit('树妖', ac.point(-1000, -2000))
--    --unit:add_skill('驱逐魔法', '英雄')
--    --unit:add_skill('慢性毒药', '英雄')
--    --unit:add_skill('魔法免疫', '英雄')
--    local unit = ac.player(1):create_unit('利爪德鲁伊', ac.point(-1000, -2000))
--    --unit:add_skill('变熊', '英雄')
--    --unit:add_skill('生命恢复', '英雄')
--    --unit:add_skill('咆哮', '英雄')
--
--    local unit = ac.player(1):create_unit('角鹰兽', ac.point(-1000, -2000))
--    --unit:add_skill('搭载弓箭手', '英雄')
--    
--    local unit = ac.player(1):create_unit('山岭巨人', ac.point(-1000, -2000))
--    --unit:add_skill('嘲讽', '英雄')
--    --unit:add_skill('战棍', '英雄')
--    --unit:add_skill('抗性皮肤', '英雄')
--    --unit:add_skill('硬化皮肤', '英雄')
--    local unit = ac.player(1):create_unit('猛禽德鲁伊', ac.point(-1000, -2000))
--    --unit:add_skill('飓风', '英雄')
--    --unit:add_skill('精灵之火', '英雄')
--    --unit:add_skill('风暴之鸦', '英雄')
--    local unit = ac.player(1):create_unit('精灵龙', ac.point(-1000, -2000))
--    unit:add('生命上限', 100000)
--    --unit:add_skill('变相移动', '英雄')
--    --unit:add_skill('魔力之焰', '英雄')
--    --unit:add_skill('魔法免疫', '英雄')
--
--    local unit = ac.player(1):create_unit('奇美拉', ac.point(-1000, -2000))
--    --unit:add_skill('闪电攻击', '隐藏')
--    --unit:add_skill('腐蚀喷吐', '英雄')
--    local unit = ac.player(1):create_unit('步兵', ac.point(-1000, -2000))
--    --unit:add_skill('防御', '英雄')
--    local unit = ac.player(1):create_unit('牧师', ac.point(-1000, -2000))
--    --unit:add_skill('医疗', '英雄')
--    --unit:add_skill('心灵之火', '英雄')
--    --unit:add_skill('牧师_驱逐魔法', '英雄')
--    local unit = ac.player(1):create_unit('女巫', ac.point(-1000, -2000))
--    --unit:add_skill('隐形术', '英雄')
--    --unit:add_skill('变形术', '英雄')
--    --unit:add_skill('减速', '英雄')
--
--    local unit = ac.player(1):create_unit('魔法破坏者', ac.point(-1000, -2000))
--    --unit:add_skill('魔法盗取', '英雄')
--    --unit:add_skill('控制魔法', '英雄')
--    --unit:add_skill('魔法免疫', '英雄')
--    --unit:add_skill('魔法回应', '英雄')
--    local unit = ac.player(1):create_unit('迫击炮小队', ac.point(-1000, -2000))
--    --unit:add_skill('照明弹', '英雄')
--    --unit:add_skill('碎片攻击', '英雄')
--    local unit = ac.player(1):create_unit('蒸汽机车', ac.point(-1000, -2000))
--    --unit:add_skill('弹幕攻击', '英雄')
--    local unit = ac.player(1):create_unit('飞行机器', ac.point(-1000, -2000))
--    --unit:add_skill('飞行机器炸弹', '英雄')
--    --unit:add_skill('真实视域', '英雄')
--    --unit:add_skill('高射炮火', '英雄')
--    local unit = ac.player(1):create_unit('龙鹰骑士', ac.point(-1000, -2000))
--    --unit:add_skill('空中锁镣', '英雄')
--    local unit = ac.player(1):create_unit('狮鹫骑士', ac.point(-1000, -2000))
--    --unit:add_skill('风暴战锤', '英雄')
--    local unit = ac.player(1):create_unit('巨魔猎头者', ac.point(-1000, -2000))
--    --unit:add_skill('狂暴愤怒升级', '英雄')
--
--    local unit = ac.player(1):create_unit('粉碎者', ac.point(-1000, -2000))
--    --unit:add_skill('燃烧之油', '英雄')
--    local unit = ac.player(1):create_unit('掠夺者', ac.point(-1000, -2000))
--    --unit:add_skill('诱捕', '英雄')
--    local unit = ac.player(1):create_unit('风骑士', ac.point(-1000, -2000))
--    --unit:add_skill('浸毒武器', '英雄')
--    local unit = ac.player(1):create_unit('科多兽', ac.point(-1000, -2000))
--    --unit:add_skill('战鼓', '英雄')
--    --unit:add_skill('吞噬', '英雄')
--    local unit = ac.player(1):create_unit('巨魔蝙蝠骑士', ac.point(-1000, -2000))
--    --unit:add_skill('不稳定化合物', '英雄')
--    local unit = ac.player(1):create_unit('萨满祭司', ac.point(-1000, -2000))
--    --unit:add_skill('嗜血术', '英雄')
--    --unit:add_skill('闪电护盾', '英雄')
--    --unit:add_skill('净化', '英雄')
--    local unit = ac.player(1):create_unit('巨魔巫医', ac.point(-1000, -2000))
--    --unit:add_skill('岗哨守卫', '英雄')
--    --unit:add_skill('治疗守卫', '英雄')
--    --unit:add_skill('静止陷阱', '英雄')
--    local unit = ac.player(1):create_unit('灵魂行者', ac.point(-1000, -2000))
--    --unit:add_skill('虚无形态', '英雄')
--    --unit:add_skill('灵魂锁链', '英雄')
--    --unit:add_skill('消魔', '英雄')
--    --unit:add_skill('先祖幽灵', '英雄')
--    --unit:add_skill('抗性皮肤', '隐藏', 5)
--    local unit = ac.player(1):create_unit('牛头人', ac.point(-1000, -2000))
--    --unit:add_skill('粉碎', '英雄')
--    local unit = ac.player(1):create_unit('食尸鬼', ac.point(-1000, -2000))
--    --unit:add_skill('吞食尸体', '英雄')
--
--    local unit = ac.player(1):create_unit('穴居恶魔', ac.point(-1000, -2000))
--    --unit:add_skill('蛛网', '英雄')
--    --unit:add_skill('蜘蛛攻击', '英雄', -11)
--    --unit:add_skill('钻地', '英雄')
--
--    local unit = ac.player(1):create_unit('石像鬼', ac.point(-1000, -2000))
--    --unit:add_skill('石像形态', '英雄')
--    local unit = ac.player(1):create_unit('不死族巫师', ac.point(-1000, -2000))
--    --unit:add_skill('残废', '英雄')
--    --unit:add_skill('复活死尸', '英雄')
--    --unit:add_skill('邪恶狂热', '英雄')
--    local unit = ac.player(1):create_unit('女妖', ac.point(-1000, -2000))
--    --unit:add_skill('反魔法外壳', '英雄')
--    --unit:add_skill('诅咒', '英雄')
--    --unit:add_skill('占据', '英雄')
--    
--
--    --创建2个尸体
--    local unit = ac.player(1):create_unit('步兵', ac.point(-1000, -2000))
--    unit:kill()
--    local unit = ac.player(1):create_unit('步兵', ac.point(-1000, -2000))
--    unit:kill()
--
--
--    local unit = ac.player(1):create_unit('绞肉车', ac.point(-1000, -2000))
--    --unit:add_skill('得到尸体', '英雄')
--    --unit:add_skill('卸载尸体', '英雄')
--    --unit:add_skill('疾病云雾', '英雄')
--    --unit:add_skill('挖掘尸体', '英雄')
--    
--
--    local unit = ac.player(1):create_unit('憎恶', ac.point(-1000, -2000))
--    --unit:add_skill('憎恶_吞食尸体', '英雄')
--    --unit:add_skill('憎恶_疾病云雾', '英雄')
--    local unit = ac.player(1):create_unit('十胜石雕像', ac.point(-1000, -2000))
--    --unit:add_skill('枯萎精髓', '英雄')
--    --unit:add_skill('灵魂触摸', '英雄')
--    --unit:add_skill('破坏者形态', '英雄')
--    local unit = ac.player(1):create_unit('冰霜巨龙', ac.point(-1000, -2000))
--    --unit:add_skill('霜冻呼吸', '隐藏')

end



local function test_unit2()
    local player = ac.player(1)
    local point = ac.point(-3000, -3000)


    local hero_pool = {}

    local x, y = -3000, -3000
    local loc1 = ac.point(-1200,-2200)
    local loc2 = ac.point(-3000,-1500)

    local enemy_list = {
        '剑圣',
        '剑圣',
        '剑圣',
        '剑圣',
        '剑圣',
        '剑圣',
    }
    for k,v in ipairs(enemy_list) do
        loc = loc2 - { math.random(0,360),math.random(100,300)}
        local unit = ac.player(12):create_unit(v, loc)
        unit.test_point = unit:get_point()
        local rate = 10
        unit:set('魔法上限', unit:get('魔法上限') * rate)
        unit:set('生命上限', unit:get('生命上限') * rate)
        unit:set('基础护甲', unit:get('基础护甲') * rate)
        unit:add('生命恢复',100)

        unit:add_restriction '硬直'
    end


    local test_list = {
        --'守望者',
        --'大魔法师',
        --'剑圣',
        --'月之女祭司',
        --'熊猫酒仙',
        --'山丘之王',
        '恐惧魔王',
        --'暗影猎手',

        --'血魔法师',
        '兽王',
        --'炼金术士',
        --'娜迦海妖',
        --'火焰领主'
        --'恶魔猎手',


    }
    for k,v in ipairs(test_list) do
        local unit = ac.player(1):create_unit(v, loc1)
        if unit:get('移动速度') > 0 then
            unit:add_skill('移动', '英雄', 9)
            unit:add_skill('保持原位', '英雄', 11)
        end
        if unit:get('攻击') > 0 then
            unit:add_skill('停止', '英雄', 10)
            if unit.data.attack_target == '地面' then
                unit:add_skill('攻击-对地', '英雄', 12)
            elseif unit.data.attack_target == '空中' then
                unit:add_skill('攻击-对空', '英雄', 12)
            else
                unit:add_skill('攻击-全部', '英雄', 12)
            end
        end
    end
end

local function test_item()
    --local point = ac.rect.j_rect('start_point_' .. ac.player(1):get_id()):get_point() + {100, 100}

    --point:add_item('韧鼓')
    --point:add_item('梅肯斯姆')
    --point:add_item('纷争面纱')
    --point:add_item('碎颅锤')
    --point:add_item('莫尔迪基安的臂章')
    --point:add_item('魔龙枪')
    --point:add_item('辉耀')
    --point:add_item('希瓦的守护')
    --point:add_item('幻影斧')
    --point:add_item('斯嘉蒂之眼')
--
    --point:add_item('王者之戒')
    --point:add_item('恢复头巾')
    --point:add_item('恶魔刀锋')
    --point:add_item('鹰歌弓')
    --point:add_item('掠夺之斧')
    --point:add_item('圣者遗物')
    --point:add_item('闪避护符')
    --point:add_item('振奋宝石')
    --point:add_item('极限法球')
    
end


local function test_ui()
    ac.wait(1000, function ()
        ac.game:notify('游戏-初始化')
        ac.game:notify('UI-初始化')
    end)
end

--ac.wait(1000, function ()
    
--end)

ac.game:event '游戏-加载完成' (function ()
    --test_unit()
    --test_unit2()
end)